Search K
Appearance
Appearance
docker-compose up 命令来启动应用。这个文件定义了应用的各个组件,包括它们的镜像、容器名称、端口映射、环境变量等。用户可以通过修改这个文件来定制应用的各个组件,而无需修改 Dockerfile。docker-compose 文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于 service 就是在定义某个应用的运行时参数,因此与 docker run 参数非常相似。
用 docker run 部署 MySQL
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
--network hmall
mysql用 docker-compose 部署 MySQL
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
networks:
- new
networks:
new:
name: hmall对比如下:
| docker run 参数 | docker compose 指令 |
|---|---|
--name | container_name |
-p | ports |
-e | environment |
-v | volumes |
--network | networks |
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-nethmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysqlnginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-netversion: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall基本语法:docker compose [OPTIONS] [COMMAND]
| 参数 | 说明 |
|---|---|
-f | 指定 compose 文件的路径和名称 |
-p | 指定 project 名称。project 就是当前 compose 文件中设置的多个 service 的集合,是逻辑概念 |
| 命令 | 说明 |
|---|---|
up | 创建并启动所有 service 容器 |
down | 停止并移除所有容器、网络 |
ps | 列出所有启动的容器 |
logs | 查看指定容器的日志 |
stop | 停止容器 |
start | 启动容器 |
restart | 重启容器 |
top | 查看运行的进程 |
exec | 在指定的运行中容器中执行命令 |
❯ docker-compose --help
Usage: docker compose [OPTIONS] COMMAND
Define and run multi-container applications with Docker.
Options:
--ansi string Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
--compatibility Run compose in backward compatibility mode
--dry-run Execute command in dry run mode
--env-file stringArray Specify an alternate environment file.
-f, --file stringArray Compose configuration files
--parallel int Control max parallelism, -1 for unlimited (default -1)
--profile stringArray Specify a profile to enable
--progress string Set type of progress output (auto, tty, plain, quiet) (default "auto")
--project-directory string Specify an alternate working directory
(default: the path of the, first specified, Compose file)
-p, --project-name string Project name
Commands:
build Build or rebuild services
config Parse, resolve and render compose file in canonical format
cp Copy files/folders between a service container and the local filesystem
create Creates containers for a service.
down Stop and remove containers, networks
events Receive real time events from containers.
exec Execute a command in a running container.
images List images used by the created containers
kill Force stop service containers.
logs View output from containers
ls List running compose projects
pause Pause services
port Print the public port for a port binding.
ps List containers
pull Pull service images
push Push service images
restart Restart service containers
rm Removes stopped service containers
run Run a one-off command on a service.
scale Scale services
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker Compose version information
wait Block until the first service container stops
watch Watch build context for service and rebuild/refresh containers when files are updated
Run 'docker compose COMMAND --help' for more information on a command.❯ tldr docker-compose
Run and manage multi container docker applications.
More information: <https://docs.docker.com/compose/reference/>.
List all running containers:
docker compose ps
Create and start all containers in the background using a `docker-compose.yml` file from the current directory:
docker compose up --detach
Start all containers, rebuild if necessary:
docker compose up --build
Start all containers by specifying a project name and using an alternate compose file:
docker compose -p project_name --file path/to/file up
Stop all running containers:
docker compose stop
Stop and remove all containers, networks, images, and volumes:
docker compose down --rmi all --volumes
Follow logs for all containers:
docker compose logs --follow
Follow logs for a specific container:
docker compose logs --follow container_name停止和删除 mysql hmall nginx 容器。
❯ dk stop mysql nginx hmall
mysql
nginx
hmall
❯ dkpsf -a
CONTAINER ID IMAGE PORTS STATUS NAMES
8da19e0e98a4 nginx Exited (0) 19 seconds ago nginx
0912ee2dd460 mysql Exited (0) 16 seconds ago mysql
916083d7d274 hmall Exited (143) 19 seconds ago hmall
❯ dkrmC
8da19e0e98a4
0912ee2dd460
916083d7d274
❯ dkpsf -a
CONTAINER ID IMAGE PORTS STATUS NAMES删除构建的 hmall 镜像。
❯ dkrmi hmall
Untagged: hmall:latest
Deleted: sha256:af4b5ab8d9fccf5efa559b714e733b43934275ffa2b68b5ace7a9167ac273a63
❯ dkIls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a6bd71f48f68 3 days ago 187MB
mysql latest a3b6608898d6 4 weeks ago 596MB清空 mysql 数据。
❯ sudo rm -rf mysql/data
❯ tree -L 2 .
.
├── Dockerfile
├── hm-service.jar
├── mysql
│ ├── conf
│ └── init
└── nginx
├── html
└── nginx.conf
5 directories, 3 files编写 docker-compose.yml 文件。
❯ nvim docker-compose.yml
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall查看文件夹详情。
❯ tree -L 2 .
.
├── docker-compose.yml
├── Dockerfile
├── hm-service.jar
├── mysql
│ ├── conf
│ └── init
└── nginx
├── html
└── nginx.conf
5 directories, 4 files使用 docker-compose 启动所有容器并后台运行。
❯ docker-compose up -d
[+] Building 1.0s (8/8) FINISHED docker:default
=> [hmall internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 298B 0.0s
=> [hmall internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [hmall internal] load metadata for docker.io/library/openjdk:11.0-jre-buster 0.7s
=> [hmall 1/3] FROM docker.io/library/openjdk:11.0-jre-buster@sha256:569ba9252ddd693a29d39e81b3123481f308eb6d529827a40c937104 0.0s
=> [hmall internal] load build context 0.0s
=> => transferring context: 38B 0.0s
=> CACHED [hmall 2/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone 0.0s
=> CACHED [hmall 3/3] COPY hm-service.jar /app.jar 0.0s
=> [hmall] exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:262997886004be820e02e42768fd784715c24cdb37da31c54cc447f686fa607a 0.0s
=> => naming to docker.io/library/hmall-hmall 0.0s
[+] Running 4/4
✔ Network hmall Created 0.1s
✔ Container mysql Started 0.1s
✔ Container hmall Started 0.1s
✔ Container nginx Started 0.1s查看镜像。
❯ dkci
CONTAINER REPOSITORY TAG IMAGE ID SIZE
hmall hmall-hmall latest 262997886004 365MB
mysql mysql latest a3b6608898d6 596MB
nginx nginx latest a6bd71f48f68 187MB查看容器。
❯ dkcpsf
CONTAINER ID IMAGE SERVICE STATUS NAME
a6e8f47011f7 hmall-hmall hmall Up 1 minutes hmall
813046caa36d mysql mysql Up 1 minutes mysql
13c900b42102 nginx nginx Up 1 minutes nginx查看黑马商城首页,发现可以访问,部署成功!
❯ curl --silent localhost:18080 | head -10
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<title>黑马商城--首页 2</title>
<link rel="stylesheet" type="text/css" href="css/webbase2.css"/>
<link rel="stylesheet" type="text/css" href="css/pages-index.css"/>